/*
 * @Author: RYPY
 * @Date: 2021-03-24 09:17:15
 * @LastEditors: RYPY
 * @LastEditTime: 2021-03-24 09:50:36
 */
const fs=require("fs");
const path=require("path");
class UserModel{
    //读文件的方法
    readFileByJson(filePath) {
        return new Promise(resolve=>{
            fs.readFile(path.join(__dirname,"../",filePath),(err,data)=>{
                if(!err)resolve(data);
                else console.log("读取文件出现错误！");
            });
        });    
    }
    //写文件的方法
    writeFileToJson(filePath,data){
        try{
            fs.writeFile(path.join(__dirname,"../",filePath),JSON.stringify(data),err=>{
                if(err)console.log("写文件出现错误");
            });
        }catch{
            console.log("写文件出现异常");
        }
    }
    //添加用户信息的方法
    async addUser(user){
        let userlist=await this.getUserList();
        let newUser={
            userid:userlist[userlist.length-1].userid*1+1,
            username:user.username,
            pwd:user.pwd,
            isadmin:"0"
        }
        userlist.push(newUser);
        this.writeFileToJson("./json/user.json",userlist);
    }
    //获取用户列表的方法
    async getUserList(){
        return JSON.parse(await this.readFileByJson("./json/user.json"));
    }
    //删除用户信息的方法
    async delUser(userid){
        let userlist=await this.getUserList();
        let newUserlist=userlist.filter(item=>{
            if(item.userid*1===userid*1){
                return false;
            }
            return true;
        });
        this.writeFileToJson("./json/user.json",newUserlist);
    }
    //修改用户信息的方法
    async updateUser(user){
        let userlist=await this.getUserList();
        let newUserlist=userlist.filter(item=>{
            if(item.userid*1===user.userid*1){
                item.username=this.checkData(user.username)?user.username:item.username;
                item.pwd=this.checkData(user.pwd)?user.pwd:item.pwd;
                item.isadmin=user.isadmin==="0"||user.isadmin==="1"?user.isadmin:item.isadmin;
            }
            return true;
        });
        this.writeFileToJson("./json/user.json",newUserlist);
    }
    //校验数据的有效性
    checkData(param){
        return param===undefined||param===null||param==="undefined"||param==="null"||param===""?false:true;
    }
    //登录判断方法
    async islogin(user){
        let userlist=await this.getUserList();
        let flag=false;
        for(let item of userlist){
            if(item.username===user.username&&item.pwd===user.pwd){
                flag=true;
                break;
            }
        }
        return flag;
    }
}
module.exports=new UserModel();



// let umodel=new UserModel();
// umodel.getUserList().then(data=>console.log(data));
// umodel.addUser({username:"aaaaa",pwd:"ddddd"});
// umodel.delUser(872)
// umodel.updateUser({userid:871,username:"sdvnsdkfljdf"})